# -*- coding: utf-8 -*-
import serial
import binascii
import string
import time

# import serial.tools.list_ports

# port_list = list(serial.tools.list_ports.comports())
# print(port_list)

# 打开第1路USB开关不反馈：A0 01 01 A2，继电器会吸合，但不会反馈数据
# 关闭第1路USB开关不反馈：A0 01 00 A1，继电器会释放，但不会反馈数据
# 打开第1路USB开关并反馈：A0 01 03 A4，继电器会吸合，并反馈状态A0 01 01 A2
# 关闭第1路USB开关并反馈：A0 01 02 A3，继电器会释放，并反馈状态A0 01 00 A1
# 取反第1路USB开关并反馈：A0 01 04 A5，继电器的状态会变化，并反馈最终状态
# 关闭第1路USB开关不反馈：A0 01 05 A6，继电器会反馈实时状态

# 打开第2路USB开关不反馈：A0 02 01 A3，继电器会吸合，但不会反馈数据
# 关闭第2路USB开关不反馈：A0 02 00 A2，继电器会释放，但不会反馈数据

# 打开第3路USB开关不反馈：A0 03 01 A4，继电器会吸合，但不会反馈数据
# 关闭第3路USB开关不反馈：A0 03 00 A3，继电器会释放，但不会反馈数据

# 打开第4路USB开关不反馈：A0 04 01 A5，继电器会吸合，但不会反馈数据
# 关闭第4路USB开关不反馈：A0 04 00 A4，继电器会释放，但不会反馈数据

serialPort = "COM3"  # 设置串口号
baudRate = 9600  # 波特率
# s = serial.Serial(serialPort, baudRate, timeout=0.5)  # 打开串口，并得到串口对象
sleeptime = 0.001


def laser1(a):
    s = serial.Serial(serialPort, baudRate, timeout=0.5)  # 打开串口，并得到串口对象
    if a == 1:
        d = bytes.fromhex('A0 01 01 A2')  # 打开第1路USB开关不反馈：A0 01 01 A2，继电器会吸合，但不会反馈数据
        s.write(d)
        time.sleep(1)
        s.close()
    elif a == 0:
        d = bytes.fromhex('A0 01 00 A1')
        s.write(d)  # 向串口写入数据
        # print("Laser 1 open!")
        time.sleep(sleeptime)
        s.close()


def laser2(b):
    s = serial.Serial(serialPort, baudRate, timeout=0.5)  # 打开串口，并得到串口对象
    if b == 1:
        d = bytes.fromhex('A0 02 01 A3')
        s.write(d)
        # print("Laser 2 close!")
        time.sleep(sleeptime)
    elif b == 0:
        d = bytes.fromhex('A0 02 00 A2')
        s.write(d)
        # print("Laser 2 close!")
        time.sleep(sleeptime)
    s.close()


def laser3(c):
    s = serial.Serial(serialPort, baudRate, timeout=0.5)  # 打开串口，并得到串口对象
    if c == 1:
        d = bytes.fromhex('A0 03 01 A4')
        s.write(d)
        # print("Laser 3 close!")
        time.sleep(sleeptime)
    elif c == 0:
        d = bytes.fromhex('A0 03 00 A3')
        s.write(d)
        # print("Laser 3 close!")
        time.sleep(sleeptime)
    s.close()


def laser4(e):
    s = serial.Serial(serialPort, baudRate, timeout=0.5)  # 打开串口，并得到串口对象
    if e == 1:
        d = bytes.fromhex('A0 04 01 A5')
        s.write(d)
        # print("Laser 4 close!")
        time.sleep(sleeptime)
    elif e == 0:
        d = bytes.fromhex('A0 04 00 A4')
        s.write(d)
        # print("Laser 4 close!")
        time.sleep(sleeptime)
    s.close()


def two_CC(x, y):
    laser1(x)
    laser2(y)


def Four_CC(x, y, m, n):
    laser1(x), laser2(y), laser3(m), laser4(n)


def Cap():
    Four_CC(0, 0, 0, 0)
    for i in range(0, 1):
        print("**********第%d次循环**********" % (i + 1))
        Four_CC(1, 1, 1, 1)
        time.sleep(2)
        Four_CC(1, 1, 0, 0)
        time.sleep(2)
        Four_CC(0, 0, 1, 1)
        time.sleep(2)
        Four_CC(0, 0, 0, 0)
        time.sleep(2)
    print("**********循环结束**********")
    Four_CC(1, 1, 1, 1)


Cap()
# two_CC(1, 1)
